/* eslint-disable no-useless-escape */
/**
 * 定义通用校验规则
 */
// 字符串
// 通用正则1，支持中文、英文字母、数字、短划线（-）、下划线（_）
const commonRegex1 = /^[\u4E00-\u9FA5A-Za-z0-9-_]+$/
// 通用正则2，支持中文、英文字母、数字
const commonRegex2 = /^[a-zA-Z0-9\u4E00-\u9FA5]+$/
// 通用正则3，支持中文、英文字母、数字、中文括号（）
const commonRegex3 = /^[a-zA-Z0-9\u4E00-\u9FA5（）]+$/

// 通用正则4，仅支持英文字母
const commonRegex4 = /^[a-zA-Z]+$/
// 通用正则5，支持中文、英文字母、数字、短划线（-）、下划线（_）、正斜线（/）和英文句号（.）
const commonRegex5 = /^[\u4E00-\u9FA5A-Za-z0-9-_/.]+$/
// 通用正则6，支持中文、英文字母、数字、短划线（-）、下划线（_）、正斜线（/）、空格（ ）和英文句号（.）
// const commonRegex6 = /^[\u4E00-\u9FA5A-Za-z0-9-_/.\s]+$/
// 通用正则7，最小8位，必须包括大写字母、小写字母、数字和特殊字符（如：~`!@#$%^&*()-_=+?.,><]）
const commonRegex7 = /^.*(?=.{8,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/
// 正则8，9到20位，必须包括大写字母、小写字母和特殊字符（如：~`!@#$%^&*()-_=+?.,><]）
const commonRegex8 = /^.*(?=.{9,20})(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*\(\)\-_=\+\?,<>]).*$/
// 正则9，9到20位，必须包括小写字母、数字和特殊字符（如：~`!@#$%^&*()-_=+?.,><]）
const commonRegex9 = /^.*(?=.{9,20})(?=.*\d)(?=.*[a-z])(?=.*[!@#$%^&*\(\)\-_=\+\?,<>]).*$/
// 正则10，9到20位，必须包括大写字母、数字和特殊字符（如：~`!@#$%^&*()-_=+?.,><]）
const commonRegex10 = /^.*(?=.{9,20})(?=.*\d)(?=.*[A-Z])(?=.*[!@#$%^&*\(\)\-_=\+\?,<>]).*$/
// 正则11，9到20位，必须包括大写字母、小写字母和数字
const commonRegex11 = /^.*(?=.{9,20})(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).*$/
// 正则12，仅支持中文
const commonRegex12 = /^[\u4E00-\u9FA5]+$/

// 数值型
// 0~99999，如单元数量
const numberRegex1 = /^[0-9]{1,5}$/
// 0~9999，如优先级/排序号
// const priorityOrderRegex = /(0|([1-9]d{0,3}))?/
const numberRegex2 = /^[0-9]{1,4}$/
// 0~99，如延时时长
const numberRegex3 = /^[0-9]{1,2}$/
// 1~100，如单元比例
const numberRegex4 = /^(\d{0,2}|100)$/

// VIN,支持英文字母、数字
const vinRegex = /^[a-zA-Z0-9]{17}$/

// 验证版本号的正则表达式
// 要求，必须是三位，x.x.x的形式，
// 每位x的范围分别为1-99,0-99,0-99。
// 不允许的情况0.x.x；01.x.x; x.0x.x; x.00.x； x.x.00; x.x.0x
const version = /^(\d+)(.\d+)$/

export default {
  commonRegex1,
  commonRegex2,
  commonRegex3,
  commonRegex4,
  commonRegex5,
  commonRegex7,
  commonRegex8,
  commonRegex9,
  commonRegex10,
  commonRegex11,
  commonRegex12,
  numberRegex1,
  numberRegex2,
  numberRegex3,
  numberRegex4,
  vinRegex,
  version
}
